package com.chenjun.designpattern.behavior.memento;

import java.io.File;
import java.io.Serializable;

/**
 * 备忘录模式也是GOF提出的23种设计模式中行为模式的一种
 * 在不破坏封装的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态。这样以后就可以就该对象恢复到原先保存的状态。
 * @author admin
 *
 */
public class 备忘录模式
{
	public static void main(String[] args)
	{
		
	}
}

/**
 * 发起人
 * @author admin
 *
 */
class Originator
{
	private int number;
	private File file = null;
	//创建备忘录
	public Memento getMemento()
	{
		return new Memento(this);
	}
	
	//恢复到原始值
	public void resetOriginator(Memento m)
	{
		this.number = m.getNumber();
		this.file = m.getFile();
	}

	public int getNumber()
	{
		return number;
	}

	public void setNumber(int number)
	{
		this.number = number;
	}

	public File getFile()
	{
		return file;
	}

	public void setFile(File file)
	{
		this.file = file;
	}
}

class Memento implements Serializable
{
	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = -2703131021830358333L;
	private int number;
	private File file = null;
	
	public Memento(Originator obj)
	{
		number = obj.getNumber();
		file = obj.getFile();
	}

	public int getNumber()
	{
		return number;
	}

	public void setNumber(int number)
	{
		this.number = number;
	}

	public File getFile()
	{
		return file;
	}

	public void setFile(File file)
	{
		this.file = file;
	}
}
